home *** CD-ROM | disk | FTP | other *** search
/ GFX Sensations 1 / Graphic Sensations - Volume 1.iso / com_net / tcp / amitcp / netinclude / sys / ioctl.h < prev    next >
C/C++ Source or Header  |  2000-01-01  |  6KB  |  127 lines

  1. #ifndef    SYS_IOCTL_H
  2. #define    SYS_IOCTL_H
  3. /*
  4. **      $Filename: sys/ioctl.h $
  5. **    $Release$
  6. **      $Revision: 3.1 $
  7. **      $Date: 1994/02/03 11:46:16 $
  8. **
  9. **    SocketIoctl codes
  10. **
  11. **    Copyright © 1993,1994 AmiTCP/IP Group, <AmiTCP-Group@hut.fi>
  12. **                  Helsinki University of Technology, Finland.
  13. **                  All rights reserved.
  14. */
  15.  
  16. /*-
  17.  * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
  18.  * All rights reserved.
  19.  *
  20.  * Redistribution and use in source and binary forms, with or without
  21.  * modification, are permitted provided that the following conditions
  22.  * are met:
  23.  * 1. Redistributions of source code must retain the above copyright
  24.  *    notice, this list of conditions and the following disclaimer.
  25.  * 2. Redistributions in binary form must reproduce the above copyright
  26.  *    notice, this list of conditions and the following disclaimer in the
  27.  *    documentation and/or other materials provided with the distribution.
  28.  * 3. All advertising materials mentioning features or use of this software
  29.  *    must display the following acknowledgement:
  30.  *    This product includes software developed by the University of
  31.  *    California, Berkeley and its contributors.
  32.  * 4. Neither the name of the University nor the names of its contributors
  33.  *    may be used to endorse or promote products derived from this software
  34.  *    without specific prior written permission.
  35.  *
  36.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  37.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  38.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  39.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  40.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  41.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  42.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  43.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  44.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  45.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46.  * SUCH DAMAGE.
  47.  *
  48.  *    @(#)ioctl.h    7.19 (Berkeley) 6/26/91
  49.  */
  50.  
  51. /*
  52.  * Ioctl's have the command encoded in the lower word, and the size of
  53.  * any in or out parameters in the upper word.  The high 3 bits of the
  54.  * upper word are used to encode the in/out status of the parameter.
  55.  */
  56.  
  57. #define    IOCPARM_MASK    0x1fff        /* parameter length, at most 13 bits */
  58. #define    IOCPARM_LEN(x)    (((x) >> 16) & IOCPARM_MASK)
  59. #define    IOCBASECMD(x)    ((x) & ~IOCPARM_MASK)
  60. #define    IOCGROUP(x)    (((x) >> 8) & 0xff)
  61.  
  62. #define    IOCPARM_MAX    4096                        /* max size of ioctl */
  63. #define    IOC_VOID    0x20000000                        /* no parameters */
  64. #define    IOC_OUT        0x40000000                  /* copy out parameters */
  65. #define    IOC_IN        0x80000000                   /* copy in parameters */
  66. #define    IOC_INOUT    (IOC_IN|IOC_OUT)
  67. #define    IOC_DIRMASK    0xe0000000                 /* mask for IN/OUT/VOID */
  68.  
  69. #define _IOC(inout,group,num,len) \
  70.     (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
  71. #define    _IO(g,n)    _IOC(IOC_VOID,    (g), (n), 0)
  72. #define    _IOR(g,n,t)    _IOC(IOC_OUT,    (g), (n), sizeof(t))
  73. #define    _IOW(g,n,t)    _IOC(IOC_IN,    (g), (n), sizeof(t))
  74. /* this should be _IORW, but stdio got there first */
  75. #define    _IOWR(g,n,t)    _IOC(IOC_INOUT,    (g), (n), sizeof(t))
  76.  
  77. /* 
  78.  * File I/O controls
  79.  */
  80. #define    FIOCLEX        _IO('f', 1)              /* set close on exec on fd */
  81. #define    FIONCLEX    _IO('f', 2)                 /* remove close on exec */
  82. #define    FIONREAD    _IOR('f', 127, long)          /* get # bytes to read */
  83. #define    FIONBIO        _IOW('f', 126, long)   /* set/clear non-blocking i/o */
  84. #define    FIOASYNC    _IOW('f', 125, long)          /* set/clear async i/o */
  85. #define    FIOSETOWN    _IOW('f', 124, long)    /* set owner (struct Task *) */
  86. #define    FIOGETOWN    _IOR('f', 123, long)    /* get owner (struct Task *) */
  87.  
  88. /* 
  89.  * Socket I/O controls
  90.  *
  91.  * SIOCSPGRP and SIOCGPGRP are identical to the FIOSETOWN and FIOGETOWN,
  92.  * respectively.
  93.  */
  94. #define    SIOCATMARK    _IOR('s',  7, long)                  /* at oob mark? */
  95. #define    SIOCSPGRP    _IOW('s',  8, long)             /* set process group */
  96. #define    SIOCGPGRP    _IOR('s',  9, long)             /* get process group */
  97.  
  98. #define    SIOCADDRT    _IOW('r', 10, struct ortentry)          /* add route */
  99. #define    SIOCDELRT    _IOW('r', 11, struct ortentry)       /* delete route */
  100.  
  101. #define    SIOCSIFADDR    _IOW ('i',12, struct ifreq)     /* set ifnet address */
  102. #define    SIOCGIFADDR    _IOWR('i',33, struct ifreq)     /* get ifnet address */
  103. #define    SIOCSIFDSTADDR    _IOW ('i',14, struct ifreq)       /* set p-p address */
  104. #define    SIOCGIFDSTADDR    _IOWR('i',34, struct ifreq)       /* get p-p address */
  105. #define    SIOCSIFFLAGS    _IOW ('i',16, struct ifreq)       /* set ifnet flags */
  106. #define    SIOCGIFFLAGS    _IOWR('i',17, struct ifreq)       /* get ifnet flags */
  107. #define    SIOCGIFBRDADDR    _IOWR('i',35, struct ifreq)    /* get broadcast addr */
  108. #define    SIOCSIFBRDADDR    _IOW ('i',19, struct ifreq)    /* set broadcast addr */
  109. #define    SIOCGIFCONF    _IOWR('i',36, struct ifconf)       /* get ifnet list */
  110. #define    SIOCGIFNETMASK    _IOWR('i',37, struct ifreq)     /* get net addr mask */
  111. #define    SIOCSIFNETMASK    _IOW ('i',22, struct ifreq)     /* set net addr mask */
  112. #define    SIOCGIFMETRIC    _IOWR('i',23, struct ifreq)         /* get IF metric */
  113. #define    SIOCSIFMETRIC    _IOW ('i',24, struct ifreq)         /* set IF metric */
  114. #define    SIOCDIFADDR    _IOW ('i',25, struct ifreq)        /* delete IF addr */
  115. #define    SIOCAIFADDR    _IOW ('i',26, struct ifaliasreq) /* add/chg IF alias */
  116.  
  117. #define    SIOCSARP    _IOW('I', 30, struct arpreq)        /* set arp entry */
  118. #define    SIOCGARP    _IOWR('I',38, struct arpreq)        /* get arp entry */
  119. #define    SIOCDARP    _IOW('I', 32, struct arpreq)     /* delete arp entry */
  120.  
  121. /*
  122.  * Private extensions to the BSD44 ioctl interface) 
  123.  */
  124. #define SIOCGARPT       _IOWR('I',66, struct arptabreq)     /* get arp table */
  125.  
  126. #endif /* !SYS_IOCTL_H */
  127.